Affinity defines a relationship between entities that describes a preference for two entities to communicate using a particular set of resources instead of a randomly chosen set of resources. As such, affinity is a concept that is independent of any one particular device, technology, or communication. Rather, affinity refers to communications that have known patterns between entities and/or technologies, as opposed to communication that is random in nature.
Affinity-based networking enables applications to specify intent about how their application or service works independent of the underlying infrastructure. The problem with this approach is different applications have different services, which complicates the identification of services that exhibit an affinity to resources and vice-versa. More importantly, the same set of services can be used in different ways by different applications, making the solution even more difficult. In addition, services are sensitive to their context (e.g., network load, type of infrastructure resources used, which other services are using the same shared resources, etc.). Hence, the infrastructure that supported one service may not be appropriate for a new instance of that same service if the operational context changed.